home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / printing / djreset.arc / DJ_RESET.C < prev    next >
C/C++ Source or Header  |  1989-06-30  |  2KB  |  81 lines

  1. /*  Reset your DeskJet Plus printer from the desktop.
  2.     Desk accessory written by Diane & Paul Close.
  3. */
  4.                    
  5. #include <osbind.h>
  6. #include <obdefs.h>
  7. #include <gemdefs.h>
  8.  
  9. #define TRUE  1
  10. #define FALSE 0
  11.  
  12. extern int gl_apid;
  13.  
  14. int    menu_id, event, ret;
  15. int    xdesk, ydesk, hdesk, wdesk;
  16. int    msgbuff[8];
  17. int BUSY;
  18. int STATUS7;
  19. int STATUS14;
  20.  
  21. char    menusave[1520];
  22.  
  23. main()
  24. {
  25.     int    i;
  26.     char    *cp;
  27.     /* initialize printer reset options */
  28.      int super();
  29.     Cconws ("\033f");    /* disable vt52 cursor    */
  30.     appl_init();
  31.     menu_id = menu_register (gl_apid,"  DJ Reset");
  32.     wind_get (0, WF_WORKXYWH, &xdesk, &ydesk, &wdesk, &hdesk);
  33. daloop:
  34.     event = evnt_multi (MU_MESAG,
  35.             0,0,0,0,0,0,0,0,0,0,0,0,0,
  36.             msgbuff,
  37.             0,0, &ret,&ret,&ret,&ret,&ret,&ret);
  38.     /* could have simply used evnt_mesag instead:
  39.         evnt_mesag (msgbuf);        */
  40.     if ((event & MU_MESAG) == 0
  41.         || msgbuff[0] != AC_OPEN
  42.         || msgbuff[4] != menu_id )
  43.             goto daloop;
  44.     graf_mouse(M_OFF,0x0L);
  45.     cp = (char *) Physbase();
  46.     for (i=0; i<1520; i++)
  47.         menusave[i] = *cp++;
  48.     wind_update(TRUE);
  49.     form_dial (FMD_START,
  50.             xdesk, ydesk, wdesk, hdesk,
  51.             xdesk, ydesk, wdesk, hdesk);
  52.     /* enable vt52 cursor if needed */
  53.     /* reset dj here (call subroutine) */
  54.     Supexec(super);
  55.  
  56.     /* disable vt52 cursor if on */
  57.     form_dial (FMD_FINISH,
  58.             xdesk, ydesk, wdesk, hdesk,
  59.             xdesk, ydesk, wdesk, hdesk);
  60.     wind_update (FALSE);
  61.     cp = (char *) Physbase();
  62.     for (i=0; i<1520; i++)
  63.         *cp++ = menusave[i];
  64.     graf_mouse(M_ON,0x0L);
  65.     goto daloop;
  66. }
  67.  
  68. super() {
  69.     register unsigned char *busy;
  70.     busy=(char *)0xffffa01L;
  71.     BUSY=*busy;
  72.     busy=(char *)0xffff8800L;
  73.     *busy=7;
  74.     STATUS7=*busy;
  75.     *busy=14;
  76.     STATUS14=*busy;
  77.     STATUS14 |= 0x20;
  78.     *busy=14;
  79.     *(busy+2) = STATUS14;
  80. }
  81.